const path = require('path')
const fs = require('fs')


/**
 * (1) 利用正则表达式获取 <style>、<script>标签内的内容
 *     1.1 //是正则格式，两边分别写匹配范围，中间是匹配规则 \s是匹配空白字符\S匹配非空白字符
 *     1.2 *是匹配任意多次,\/是为了给/转义，因为/已经被认为是正则的标志
 * (2) 下面的目的是 将index.html文件中的 js、css拆分到两个.js、.css文件中
 *     然后再将这两个文件引入到.html文件中
 * */ 
const regStyle = /<style>[\s\S]*<\/style>/
const regScript =  /<script>[\s\S]*<\/script>/

fs.readFile(path.join(__dirname,'/index.html'),'utf8',(err,dataStr)=>{
   if(err){
      return  console.log('文件读取失败！'+err.message);
   }

   console.log('文件读取成功！'+dataStr);
   
   resolveStyle(dataStr)

   resolveScript(dataStr)

   resolveHtml(dataStr)

})

function resolveHtml(data){
   
   const newHtml = data.replace(regStyle,'<link rel="stylesheet" href="./index.css"/>')
                  .replace(regScript,'<script src="./index.js"></script>')

   fs.writeFile(path.join(__dirname,'/index.html'),newHtml,(err)=>{
        if(err){
          return console.log('HTML写入失败!'+err.message);
        }
        console.log('HTML写入成功!');
   })
}

function resolveStyle(data){
   
  const style = regStyle.exec(data)

  const newStyle = style[0].replace('<style>','').replace('</style>','')

  fs.writeFile(path.join(__dirname,'/index.css'),newStyle,(err)=>{
        if(err){
          return console.log('CSS写入失败!'+err.message);
        }
        console.log('CSS写入成功!');
  })
}

function resolveScript(data){
  
  const script = regScript.exec(data)

  const newScript = script[0].replace('<script>','').replace('</script>','')

  fs.writeFile(path.join(__dirname,'/index.js'),newScript,(err)=>{
        if(err){
          return console.log('JS写入失败!'+err.message);
        }
        console.log('JS写入成功!');
  })
}